// 定义包名，表明该类属于数据实体类所在的包
package com.zhunaer.entity;

// 导入用于精确表示和计算十进制数的类，通常用于处理金额等场景
import java.math.BigDecimal;
// 导入用于表示日期和时间的类
import java.util.Date;

/**
 * Shop 类代表系统中的商铺实体，包含了商铺的各种属性和相关操作方法。
 */
public class Shop {
    /**
     * 商铺的唯一标识符，用于在系统中唯一标识一个商铺。
     */
    private Integer shopId;

    /**
     * 关联的用户 ID，表明该商铺属于哪个用户。
     */
    private Integer userId;

    /**
     * 商铺的名称，是商铺的一个重要标识信息。
     */
    private String shopName;

    /**
     * 商铺的实际地址，用于定位和联系商铺。
     */
    private String address;

    /**
     * 商铺的联系方式，比如电话号码、邮箱等，方便与商铺进行沟通。
     */
    private String contactInfo;

    /**
     * 与商铺相关的关键词，用于搜索和分类商铺。
     */
    private String keywords;

    /**
     * 商铺的营业状态，可能用不同的整数值表示不同的营业状态，如营业中、暂停营业等。
     */
    private Integer businessStatus;

    /**
     * 商铺的审核状态，可能用不同的整数值表示审核的不同阶段，如待审核、审核通过、审核不通过等。
     */
    private Integer auditStatus;

    /**
     * 商铺的申请状态，可能用不同的整数值表示申请的不同阶段，如已申请、申请处理中、申请拒绝等。
     */
    private Integer applyStatus;

    /**
     * 商铺的创建时间，记录了商铺在系统中创建的具体时间。
     */
    private Date createTime;

    /**
     * 获取商铺的唯一标识符。
     * @return 商铺 ID
     */
    public Integer getShopId() {
        return shopId;
    }

    /**
     * 设置商铺的唯一标识符。
     * @param shopId 要设置的商铺 ID
     */
    public void setShopId(Integer shopId) {
        this.shopId = shopId;
    }

    /**
     * 获取关联的用户 ID。
     * @return 用户 ID
     */
    public Integer getUserId() {
        return userId;
    }

    /**
     * 设置关联的用户 ID。
     * @param userId 要设置的用户 ID
     */
    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    /**
     * 获取商铺的名称。
     * @return 商铺名称
     */
    public String getShopName() {
        return shopName;
    }

    /**
     * 设置商铺的名称。
     * @param shopName 要设置的商铺名称
     */
    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    /**
     * 获取商铺的地址。
     * @return 商铺地址
     */
    public String getAddress() {
        return address;
    }

    /**
     * 设置商铺的地址。
     * @param address 要设置的商铺地址
     */
    public void setAddress(String address) {
        this.address = address;
    }

    /**
     * 设置商铺的联系方式。
     * @param contactInfo 要设置的联系方式
     */
    public void setContactInfo(String contactInfo) {
        this.contactInfo = contactInfo;
    }

    /**
     * 获取与商铺相关的关键词。
     * @return 关键词
     */
    public String getKeywords() {
        return keywords;
    }

    /**
     * 设置与商铺相关的关键词。
     * @param keywords 要设置的关键词
     */
    public void setKeywords(String keywords) {
        this.keywords = keywords;
    }

    /**
     * 获取商铺的创建时间。
     * @return 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置商铺的创建时间。
     * @param createTime 要设置的创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 重写 toString 方法，用于将商铺对象的信息以字符串形式输出，方便调试和日志记录。
     * @return 包含商铺信息的字符串
     */
    @Override
    public String toString() {
        return "Shop{" +
                "shopId=" + shopId +
                ", userId=" + userId +
                ", shopName='" + shopName + '\'' +
                ", address='" + address + '\'' +
                ", contactInfo='" + contactInfo + '\'' +
                ", keywords='" + keywords + '\'' +
                ", businessStatus=" + businessStatus +
                ", auditStatus=" + auditStatus +
                ", createTime=" + createTime +
                '}';
    }

    /**
     * 获取商铺的联系方式。
     * @return 联系方式
     */
    public String getContactInfo() {
        return contactInfo;
    }

    /**
     * 获取商铺的申请状态。
     * @return 申请状态
     */
    public Integer getApplyStatus() {
        return applyStatus;
    }

    /**
     * 设置商铺的申请状态。
     * @param applyStatus 要设置的申请状态
     */
    public void setApplyStatus(Integer applyStatus) {
        this.applyStatus = applyStatus;
    }

    /**
     * 获取商铺的营业状态。
     * @return 营业状态
     */
    public Integer getBusinessStatus() {
        return businessStatus;
    }

    /**
     * 设置商铺的营业状态。
     * @param businessStatus 要设置的营业状态
     */
    public void setBusinessStatus(Integer businessStatus) {
        this.businessStatus = businessStatus;
    }

    /**
     * 获取商铺的审核状态。
     * @return 审核状态
     */
    public Integer getAuditStatus() {
        return auditStatus;
    }

    /**
     * 设置商铺的审核状态。
     * @param auditStatus 要设置的审核状态
     */
    public void setAuditStatus(Integer auditStatus) {
        this.auditStatus = auditStatus;
    }
}